#include<iostream>
#include<vector>
using namespace std ; 
typedef long long ll ; 
ll rd(){
	ll a = 0 ; 
	scanf("%lld",&a);
	return a ; 
} 
int main(){
	//初始化变量 
	ll n = rd() ,p = rd();
	vector<ll> as(n) ; 
	vector<ll> zs(n) ; 
	//输入数据 
	for(int i = 0 ; i < n ;i++){
		as[i] = rd() ; 
	}
	for(int i = 0 ; i < p ; i++){
		ll x = rd() , y = rd() , z = rd() ; 
		zs[x-1] += z ;
		if(y!=n) zs[y] -= z ;  
	}
	//求和 
	ll flag = 0 ; 
	for(int i = 0 ; i < n ;i++){
		 flag += zs[i] ;
		 as[i]+= flag ;  
	}
	//获取最小值 
	ll ans = 101; 
	for(int i = 0 ; i < n ; i++){
		ans = ans < as[i] ? ans : as[i] ;  
	}
	printf("%lld", ans) ;
	
	return 0 ; 
}